1.7k 词
什么是字符串匹配 暴力解法 KMP算法 具体实现 补充:   KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,用于在一个主串中查找一个模式串的位置。它通过预处理模式串,避免了在匹配失败时重复比较已经匹配的部分,从而提高了匹配效率。 该算法在1977年被提出,取三位贡献者的姓名首字母组成算法名称。 什么是字符串匹配字符串匹配问题是计算机科学中的一个经典问题,其核心目标是在一个较长的文本串(Text)中查找是否存在一个或多个与给定模式串(Pattern)完全相同的子串。 例如: 文本串(T):"ABABDABACDABABCABAB" 模式串(P):"ABABCABAB" 那么模式串可以在文本串的索引11处匹配   暴力解法知道控制语句用法的人都知道,这个问题可以套两层循环来解决,从文本串的第1个字符开始,与模式串逐字符比对,如果发现不匹配,则从文本串的第2个字符开始重新比对,以此类推,该解法时间复杂度为$O(m*n)$,效率较低。   KMP算法KMP算法通过预处理模...
608 词
出于科研项目的需求,我需要开发一个能个性化定制界面与功能的BLE手机上位机软件,在经过简单的调研后,主要有以下两种开发路径: Android Studio MIT APP Inventor 其中AS需要Java基础,且开发周期长;MIT APP Inventor图形化编程,20min可上手,于是我选择后者,最终也能达到我想要的效果。 选择建议如下: 选 Android Studio:如果你想成为专业开发者,或开发功能复杂、可发布的商业应用。 选 MIT App Inventor:如果你是学生,或只想快速做一个简单应用 于是在B站看了几个包浆的教学视频后,我开始上手制作,过程意外地顺利 首先,你需要明确你的APP要包含哪些模块 如下图所示,在登陆官网后,你可以把你需要的模块在侧边栏拖入主页面 依次描述我的思路 上图中组件1是BLE设备搜索与断联按钮 2是BLE连接状态,3是波形图,4是实时数值,5是清空按钮; 当然也有后端组件Ⅰ,是BLE模块,这个在官网没有,需要下载拓展包,https://iot.appinventor.mit.edu/ 这个网站里可以...
5.8k 词
MFCC的核心思想是模仿人耳对声音的非线性感知特性(人耳对低频声音比高频声音更敏感),从而更好地表示语音特征。其流程可以概括为以下步骤: 分帧 目的:语音信号是非平稳信号,其特性是随时间变化的。但在一个非常短的时间段内,可以近似认为是平稳的。分帧就是将长信号切分成许多短片段来分析。 操作:使用一个固定长度的窗口以一定的帧移沿着信号滑动并截取数据。 加窗 目的:减少每一帧信号在其两端处的频谱泄漏,使帧两端平滑地衰减到零,从而降低后续傅里叶变换后旁瓣的强度。 操作:将每一帧信号乘上一个窗函数。 傅里叶变换和功率谱计算 目的:将信号从时域转换到频域。 操作: 对每一帧加窗后的信号进行FFT,得到复数频谱。 然后计算其功率谱(取模的平方)。P = |FFT(frame)|² / N (N是FFT点数) 梅尔滤波器组滤波 目的:模拟人耳的听觉特性。人耳对于不同频率的感知能力是不同的,在低频区域区分度高,在高频区域区分度低。梅尔刻度是一种将实际频率转换为更符合人耳感知的频率刻度。 操作: 定义一组三角带通滤波器(梅尔滤波器组),这些滤波器在梅尔刻度上是等宽的,但在线性频率刻度上是不...
142k 词
本文记录在算法学习过程中的问题拆解、模型抽象与思路复盘。相比结果,更关注思考路径与方法沉淀,希望通过持续整理,构建稳定的解题框架与认知结构。 1. 数学 2. 数组 3. 链表 4. 哈希散列 5. 栈与队列 6. 类与OOP应用 7. 二叉树 8. 回溯 9. 贪心 10. 动态规划 11. 单调栈 12. 图论 12.1 理论基础 12.2 深度优先搜索理论基础 12.3 广度优先搜索理论基础 12.4 并查集理论基础 12.5 案例 1. 数学###1.1 基础 有一天, 小明收到一张奇怪的信, 信上要小明计算出给定数各个位上数字为偶数的和。例如:5548,结果为12,等于 4 + 8 。小明很苦恼,想请你帮忙解决这个问题 #include <iostream> using namespace std; int main(){ int n, sum = 0; //input while(cin >> n){ // calculation while (n != 0){...